home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / byteibm.arc / WILTON.ARC / CSLS3.ASM < prev    next >
Encoding:
Assembly Source File  |  1985-07-12  |  15.5 KB  |  348 lines

  1.             title    '256-character table for EGA'
  2.             name    csls3
  3.             page    55,132
  4.  
  5. ;
  6. ; RAM-Loadable Character Sets for the IBM PC
  7. ; Listing 3
  8. ;
  9. ; Richard Wilton
  10. ; July 1986
  11. ;
  12.  
  13. ; Notes:
  14. ;    This program loads a 256-character definition table for use in APA
  15. ;    graphics modes.  The program first selects an APA graphics mode.
  16. ;    Then the BIOS pointers to the character set table are updated.
  17. ;
  18. ;    Use on IBM Enhanced Graphics Adapter ONLY.
  19.  
  20.  
  21. cseg    segment para public 'CODE'
  22.  
  23.     assume    cs:cseg,ds:cseg
  24.  
  25.     org    100h            ; initial program counter for .COM file
  26.  
  27. label0:
  28.     jmp    label1            ; jump around character set table
  29.     even
  30.  
  31. ; definitions for 8 by 8 characters 00h through FFh
  32. csdefs    db    0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh        ; 000h
  33.     db    081h,07Eh,05Ah,07Eh,042h,066h,07Eh,081h        ; 001h
  34.     db    081h,000h,024h,000h,03Ch,018h,000h,081h        ; 002h
  35.     db    093h,001h,001h,001h,083h,0C7h,0EFh,0FFh        ; 003h
  36.     db    0EFh,0C7h,083h,001h,083h,0C7h,0EFh,0FFh        ; 004h
  37.     db    0C7h,083h,0C7h,001h,001h,083h,0C7h,083h        ; 005h
  38.     db    0EFh,0EFh,0C7h,083h,001h,083h,0C7h,083h        ; 006h
  39.     db    0FFh,0FFh,0E7h,0C3h,0C3h,0E7h,0FFh,0FFh        ; 007h
  40.     db    000h,000h,018h,03Ch,03Ch,018h,000h,000h        ; 008h
  41.     db    0FFh,0C3h,099h,0BDh,0BDh,099h,0C3h,0FFh        ; 009h
  42.     db    000h,03Ch,066h,042h,042h,066h,03Ch,000h        ; 00Ah
  43.     db    0F0h,0F8h,0F0h,082h,033h,033h,033h,087h        ; 00Bh
  44.     db    0C3h,099h,099h,099h,0C3h,0E7h,081h,0E7h        ; 00Ch
  45.     db    0C0h,0CCh,0C0h,0CFh,0CFh,08Fh,00Fh,01Fh        ; 00Dh
  46.     db    080h,09Ch,080h,09Ch,09Ch,098h,019h,03Fh        ; 00Eh
  47.     db    066h,0A5h,0C3h,018h,018h,0C3h,0A5h,066h        ; 00Fh
  48.     db    07Fh,01Fh,007h,001h,007h,01Fh,07Fh,0FFh        ; 010h
  49.     db    0FDh,0F1h,0C1h,001h,0C1h,0F1h,0FDh,0FFh        ; 011h
  50.     db    0E7h,0C3h,081h,0E7h,0E7h,081h,0C3h,0E7h        ; 012h
  51.     db    099h,099h,099h,099h,099h,0FFh,099h,0FFh        ; 013h
  52.     db    080h,024h,024h,084h,0E4h,0E4h,0E4h,0FFh        ; 014h
  53.     db    0C1h,09Ch,0C7h,093h,093h,0C7h,033h,087h        ; 015h
  54.     db    0FFh,0FFh,0FFh,0FFh,081h,081h,081h,0FFh        ; 016h
  55.     db    0E7h,0C3h,081h,0E7h,081h,0C3h,0E7h,000h        ; 017h
  56.     db    0E7h,0C3h,081h,0E7h,0E7h,0E7h,0E7h,0FFh        ; 018h
  57.     db    0E7h,0E7h,0E7h,0E7h,081h,0C3h,0E7h,0FFh        ; 019h
  58.     db    0FFh,0E7h,0F3h,001h,0F3h,0E7h,0FFh,0FFh        ; 01Ah
  59.     db    0FFh,0CFh,09Fh,001h,09Fh,0CFh,0FFh,0FFh        ; 01Bh
  60.     db    0FFh,0FFh,03Fh,03Fh,03Fh,001h,0FFh,0FFh        ; 01Ch
  61.     db    0FFh,0DBh,099h,000h,099h,0DBh,0FFh,0FFh        ; 01Dh
  62.     db    0FFh,0E7h,0C3h,081h,000h,000h,0FFh,0FFh        ; 01Eh
  63.     db    0FFh,000h,000h,081h,0C3h,0E7h,0FFh,0FFh        ; 01Fh
  64.     db    0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh        ; 020h
  65.     db    0CFh,087h,087h,0CFh,0CFh,0FFh,0CFh,0FFh        ; 021h
  66.     db    093h,093h,093h,0FFh,0FFh,0FFh,0FFh,0FFh        ; 022h
  67.     db    093h,093h,001h,093h,001h,093h,093h,0FFh        ; 023h
  68.     db    0CFh,083h,03Fh,087h,0F3h,007h,0CFh,0FFh        ; 024h
  69.     db    0FFh,039h,033h,0E7h,0CFh,099h,039h,0FFh        ; 025h
  70.     db    0C7h,093h,0C7h,089h,023h,033h,089h,0FFh        ; 026h
  71.     db    09Fh,09Fh,03Fh,0FFh,0FFh,0FFh,0FFh,0FFh        ; 027h
  72.     db    0E7h,0CFh,09Fh,09Fh,09Fh,0CFh,0E7h,0FFh        ; 028h
  73.     db    09Fh,0CFh,0E7h,0E7h,0E7h,0CFh,09Fh,0FFh        ; 029h
  74.     db    0FFh,099h,0C3h,000h,0C3h,099h,0FFh,0FFh        ; 02Ah
  75.     db    0FFh,0CFh,0CFh,003h,0CFh,0CFh,0FFh,0FFh        ; 02Bh
  76.     db    0FFh,0FFh,0FFh,0FFh,0FFh,0CFh,0CFh,09Fh        ; 02Ch
  77.     db    0FFh,0FFh,0FFh,003h,0FFh,0FFh,0FFh,0FFh        ; 02Dh
  78.     db    0FFh,0FFh,0FFh,0FFh,0FFh,0CFh,0CFh,0FFh        ; 02Eh
  79.     db    0F9h,0F3h,0E7h,0CFh,09Fh,03Fh,07Fh,0FFh        ; 02Fh
  80.     db    083h,039h,031h,021h,009h,019h,083h,0FFh        ; 030h
  81.     db    0CFh,08Fh,0CFh,0CFh,0CFh,0CFh,003h,0FFh        ; 031h
  82.     db    087h,033h,0F3h,0C7h,09Fh,033h,003h,0FFh        ; 032h
  83.     db    087h,033h,0F3h,0C7h,0F3h,033h,087h,0FFh        ; 033h
  84.     db    0E3h,0C3h,093h,033h,001h,0F3h,0E1h,0FFh        ; 034h
  85.     db    003h,03Fh,007h,0F3h,0F3h,033h,087h,0FFh        ; 035h
  86.     db    0C7h,09Fh,03Fh,007h,033h,033h,087h,0FFh        ; 036h
  87.     db    003h,033h,0F3h,0E7h,0CFh,0CFh,0CFh,0FFh        ; 037h
  88.     db    087h,033h,033h,087h,033h,033h,087h,0FFh        ; 038h
  89.     db    087h,033h,033h,083h,0F3h,0E7h,08Fh,0FFh        ; 039h
  90.     db    0FFh,0CFh,0CFh,0FFh,0FFh,0CFh,0CFh,0FFh        ; 03Ah
  91.     db    0FFh,0CFh,0CFh,0FFh,0FFh,0CFh,0CFh,09Fh        ; 03Bh
  92.     db    0E7h,0CFh,09Fh,03Fh,09Fh,0CFh,0E7h,0FFh        ; 03Ch
  93.     db    0FFh,0FFh,003h,0FFh,0FFh,003h,0FFh,0FFh        ; 03Dh
  94.     db    09Fh,0CFh,0E7h,0F3h,0E7h,0CFh,09Fh,0FFh        ; 03Eh
  95.     db    087h,033h,0F3h,0E7h,0CFh,0FFh,0CFh,0FFh        ; 03Fh
  96.     db    083h,039h,021h,021h,021h,03Fh,087h,0FFh        ; 040h
  97.     db    0CFh,087h,033h,033h,003h,033h,033h,0FFh        ; 041h
  98.     db    003h,099h,099h,083h,099h,099h,003h,0FFh        ; 042h
  99.     db    0C3h,099h,03Fh,03Fh,03Fh,099h,0C3h,0FFh        ; 043h
  100.     db    007h,093h,099h,099h,099h,093h,007h,0FFh        ; 044h
  101.     db    001h,09Dh,097h,087h,097h,09Dh,001h,0FFh        ; 045h
  102.     db    001h,09Dh,097h,087h,097h,09Fh,00Fh,0FFh        ; 046h
  103.     db    0C3h,099h,03Fh,03Fh,031h,099h,0C1h,0FFh        ; 047h
  104.     db    033h,033h,033h,003h,033h,033h,033h,0FFh        ; 048h
  105.     db    087h,0CFh,0CFh,0CFh,0CFh,0CFh,087h,0FFh        ; 049h
  106.     db    0E1h,0F3h,0F3h,0F3h,033h,033h,087h,0FFh        ; 04Ah
  107.     db    019h,099h,093h,087h,093h,099h,019h,0FFh        ; 04Bh
  108.     db    00Fh,09Fh,09Fh,09Fh,09Dh,099h,001h,0FFh        ; 04Ch
  109.     db    039h,011h,001h,001h,029h,039h,039h,0FFh        ; 04Dh
  110.     db    039h,019h,009h,021h,031h,039h,039h,0FFh        ; 04Eh
  111.     db    0C7h,093h,039h,039h,039h,093h,0C7h,0FFh        ; 04Fh
  112.     db    003h,099h,099h,083h,09Fh,09Fh,00Fh,0FFh        ; 050h
  113.     db    087h,033h,033h,033h,023h,087h,0E3h,0FFh        ; 051h
  114.     db    003h,099h,099h,083h,093h,099h,019h,0FFh        ; 052h
  115.     db    087h,033h,01Fh,08Fh,0E3h,033h,087h,0FFh        ; 053h
  116.     db    003h,04Bh,0CFh,0CFh,0CFh,0CFh,087h,0FFh        ; 054h
  117.     db    033h,033h,033h,033h,033h,033h,003h,0FFh        ; 055h
  118.     db    033h,033h,033h,033h,033h,087h,0CFh,0FFh        ; 056h
  119.     db    039h,039h,039h,029h,001h,011h,039h,0FFh        ; 057h
  120.     db    039h,039h,093h,0C7h,0C7h,093h,039h,0FFh        ; 058h
  121.     db    033h,033h,033h,087h,0CFh,0CFh,087h,0FFh        ; 059h
  122.     db    001h,039h,073h,0E7h,0CDh,099h,001h,0FFh        ; 05Ah
  123.     db    087h,09Fh,09Fh,09Fh,09Fh,09Fh,087h,0FFh        ; 05Bh
  124.     db    03Fh,09Fh,0CFh,0E7h,0F3h,0F9h,0FDh,0FFh        ; 05Ch
  125.     db    087h,0E7h,0E7h,0E7h,0E7h,0E7h,087h,0FFh        ; 05Dh
  126.     db    0EFh,0C7h,093h,039h,0FFh,0FFh,0FFh,0FFh        ; 05Eh
  127.     db    0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,000h        ; 05Fh
  128.     db    0CFh,0CFh,0E7h,0FFh,0FFh,0FFh,0FFh,0FFh        ; 060h
  129.     db    0FFh,0FFh,087h,0F3h,083h,033h,089h,0FFh        ; 061h
  130.     db    01Fh,09Fh,09Fh,083h,099h,099h,023h,0FFh        ; 062h
  131.     db    0FFh,0FFh,087h,033h,03Fh,033h,087h,0FFh        ; 063h
  132.     db    0E3h,0F3h,0F3h,083h,033h,033h,089h,0FFh        ; 064h
  133.     db    0FFh,0FFh,087h,033h,003h,03Fh,087h,0FFh        ; 065h
  134.     db    0C7h,093h,09Fh,00Fh,09Fh,09Fh,00Fh,0FFh        ; 066h
  135.     db    0FFh,0FFh,089h,033h,033h,083h,0F3h,007h        ; 067h
  136.     db    01Fh,09Fh,093h,089h,099h,099h,019h,0FFh        ; 068h
  137.     db    0CFh,0FFh,08Fh,0CFh,0CFh,0CFh,087h,0FFh        ; 069h
  138.     db    0F3h,0FFh,0F3h,0F3h,0F3h,033h,033h,087h        ; 06Ah
  139.     db    01Fh,09Fh,099h,093h,087h,093h,019h,0FFh        ; 06Bh
  140.     db    08Fh,0CFh,0CFh,0CFh,0CFh,0CFh,087h,0FFh        ; 06Ch
  141.     db    0FFh,0FFh,033h,001h,001h,029h,039h,0FFh        ; 06Dh
  142.     db    0FFh,0FFh,007h,033h,033h,033h,033h,0FFh        ; 06Eh
  143.     db    0FFh,0FFh,087h,033h,033h,033h,087h,0FFh        ; 06Fh
  144.     db    0FFh,0FFh,023h,099h,099h,083h,09Fh,00Fh        ; 070h
  145.     db    0FFh,0FFh,089h,033h,033h,083h,0F3h,0E1h        ; 071h
  146.     db    0FFh,0FFh,023h,089h,099h,09Fh,00Fh,0FFh        ; 072h
  147.     db    0FFh,0FFh,083h,03Fh,087h,0F3h,007h,0FFh        ; 073h
  148.     db    0EFh,0CFh,083h,0CFh,0CFh,0CBh,0E7h,0FFh        ; 074h
  149.     db    0FFh,0FFh,033h,033h,033h,033h,089h,0FFh        ; 075h
  150.     db    0FFh,0FFh,033h,033h,033h,087h,0CFh,0FFh        ; 076h
  151.     db    0FFh,0FFh,039h,029h,001h,001h,093h,0FFh        ; 077h
  152.     db    0FFh,0FFh,039h,093h,0C7h,093h,039h,0FFh        ; 078h
  153.     db    0FFh,0FFh,033h,033h,033h,083h,0F3h,007h        ; 079h
  154.     db    0FFh,0FFh,003h,067h,0CFh,09Bh,003h,0FFh        ; 07Ah
  155.     db    0E3h,0CFh,0CFh,01Fh,0CFh,0CFh,0E3h,0FFh        ; 07Bh
  156.     db    0E7h,0E7h,0E7h,0FFh,0E7h,0E7h,0E7h,0FFh        ; 07Ch
  157.     db    01Fh,0CFh,0CFh,0E3h,0CFh,0CFh,01Fh,0FFh        ; 07Dh
  158.     db    089h,023h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh        ; 07Eh
  159.     db    0FFh,0EFh,0C7h,093h,039h,039h,001h,0FFh        ; 07Fh
  160. hi_half    db    087h,033h,03Fh,033h,087h,0E7h,0F3h,087h        ; 080h
  161.     db    0FFh,099h,0FFh,099h,099h,099h,0C0h,0FFh        ; 081h
  162.     db    0F1h,0FFh,0C3h,099h,081h,09Fh,0C3h,0FFh        ; 082h
  163.     db    081h,03Ch,0C3h,0F9h,0C1h,099h,0C0h,0FFh        ; 083h
  164.     db    099h,0FFh,0C3h,0F9h,0C1h,099h,0C0h,0FFh        ; 084h
  165.     db    08Fh,0FFh,0C3h,0F9h,0C1h,099h,0C0h,0FFh        ; 085h
  166.     db    0E7h,0E7h,0C3h,0F9h,0C1h,099h,0C0h,0FFh        ; 086h
  167.     db    0FFh,0FFh,0C3h,09Fh,09Fh,0C3h,0F9h,0E3h        ; 087h
  168.     db    081h,03Ch,0C3h,099h,081h,09Fh,0C3h,0FFh        ; 088h
  169.     db    099h,0FFh,0C3h,099h,081h,09Fh,0C3h,0FFh        ; 089h
  170.     db    08Fh,0FFh,0C3h,099h,081h,09Fh,0C3h,0FFh        ; 08Ah
  171.     db    099h,0FFh,0C7h,0E7h,0E7h,0E7h,0C3h,0FFh        ; 08Bh
  172.     db    083h,039h,0C7h,0E7h,0E7h,0E7h,0C3h,0FFh        ; 08Ch
  173.     db    08Fh,0FFh,0C7h,0E7h,0E7h,0E7h,0C3h,0FFh        ; 08Dh
  174.     db    09Ch,0E3h,0C9h,09Ch,080h,09Ch,09Ch,0FFh        ; 08Eh
  175.     db    0E7h,0E7h,0FFh,0C3h,099h,081h,099h,0FFh        ; 08Fh
  176.     db    0F1h,0FFh,081h,0CFh,0C3h,0CFh,081h,0FFh        ; 090h
  177.     db    0FFh,0FFh,080h,0F3h,080h,033h,080h,0FFh        ; 091h
  178.     db    0E0h,0C9h,099h,080h,099h,099h,098h,0FFh        ; 092h
  179.     db    0C3h,099h,0FFh,0C3h,099h,099h,0C3h,0FFh        ; 093h
  180.     db    0FFh,099h,0FFh,0C3h,099h,099h,0C3h,0FFh        ; 094h
  181.     db    0FFh,08Fh,0FFh,0C3h,099h,099h,0C3h,0FFh        ; 095h
  182.     db    0C3h,099h,0FFh,099h,099h,099h,0C0h,0FFh        ; 096h
  183.     db    0FFh,08Fh,0FFh,099h,099h,099h,0C0h,0FFh        ; 097h
  184.     db    0FFh,099h,0FFh,099h,099h,0C1h,0F9h,083h        ; 098h
  185.     db    03Ch,0E7h,0C3h,099h,099h,0C3h,0E7h,0FFh        ; 099h
  186.     db    099h,0FFh,099h,099h,099h,099h,0C3h,0FFh        ; 09Ah
  187.     db    0E7h,0E7h,081h,03Fh,03Fh,081h,0E7h,0E7h        ; 09Bh
  188.     db    0E3h,0C9h,0CDh,087h,0CFh,08Ch,081h,0FFh        ; 09Ch
  189.     db    099h,099h,0C3h,081h,0E7h,081h,0E7h,0E7h        ; 09Dh
  190.     db    007h,033h,033h,005h,039h,030h,039h,038h        ; 09Eh
  191.     db    0F1h,0E4h,0E7h,0C3h,0E7h,0E7h,027h,08Fh        ; 09Fh
  192.     db    0F1h,0FFh,0C3h,0F9h,0C1h,099h,0C0h,0FFh        ; 0A0h
  193.     db    0E3h,0FFh,0C7h,0E7h,0E7h,0E7h,0C3h,0FFh        ; 0A1h
  194.     db    0FFh,0F1h,0FFh,0C3h,099h,099h,0C3h,0FFh        ; 0A2h
  195.     db    0FFh,0F1h,0FFh,099h,099h,099h,0C0h,0FFh        ; 0A3h
  196.     db    0FFh,083h,0FFh,083h,099h,099h,099h,0FFh        ; 0A4h
  197.     db    081h,0FFh,099h,089h,081h,091h,099h,0FFh        ; 0A5h
  198.     db    0C3h,093h,093h,0C1h,0FFh,081h,0FFh,0FFh        ; 0A6h
  199.     db    0C7h,093h,093h,0C7h,0FFh,083h,0FFh,0FFh        ; 0A7h
  200.     db    0E7h,0FFh,0E7h,0CFh,09Fh,099h,0C3h,0FFh        ; 0A8h
  201.     db    0FFh,0FFh,0FFh,081h,09Fh,09Fh,0FFh,0FFh        ; 0A9h
  202.     db    0FFh,0FFh,0FFh,081h,0F9h,0F9h,0FFh,0FFh        ; 0AAh
  203.     db    03Ch,039h,033h,021h,0CCh,099h,033h,0F0h        ; 0ABh
  204.     db    03Ch,039h,033h,024h,0C8h,090h,030h,0FCh        ; 0ACh
  205.     db    0E7h,0E7h,0FFh,0E7h,0E7h,0E7h,0E7h,0FFh        ; 0ADh
  206.     db    0FFh,0CCh,099h,033h,099h,0CCh,0FFh,0FFh        ; 0AEh
  207.     db    0FFh,033h,099h,0CCh,099h,033h,0FFh,0FFh        ; 0AFh
  208.     db    0DDh,077h,0DDh,077h,0DDh,077h,0DDh,077h        ; 0B0h
  209.     db    0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h        ; 0B1h
  210.     db    024h,088h,024h,011h,024h,088h,024h,011h        ; 0B2h
  211.     db    0E7h,0E7h,0E7h,0E7h,0E7h,0E7h,0E7h,0E7h        ; 0B3h
  212.     db    0E7h,0E7h,0E7h,0E7h,007h,0E7h,0E7h,0E7h        ; 0B4h
  213.     db    0E7h,0E7h,007h,0E7h,007h,0E7h,0E7h,0E7h        ; 0B5h
  214.     db    0C9h,0C9h,0C9h,0C9h,009h,0C9h,0C9h,0C9h        ; 0B6h
  215.     db    0FFh,0FFh,0FFh,0FFh,001h,0C9h,0C9h,0C9h        ; 0B7h
  216.     db    0FFh,0FFh,007h,0E7h,007h,0E7h,0E7h,0E7h        ; 0B8h
  217.     db    0C9h,0C9h,009h,0F9h,009h,0C9h,0C9h,0C9h        ; 0B9h
  218.     db    0C9h,0C9h,0C9h,0C9h,0C9h,0C9h,0C9h,0C9h        ; 0BAh
  219.     db    0FFh,0FFh,001h,0F9h,009h,0C9h,0C9h,0C9h        ; 0BBh
  220.     db    0C9h,0C9h,009h,0F9h,001h,0FFh,0FFh,0FFh        ; 0BCh
  221.     db    0C9h,0C9h,0C9h,0C9h,001h,0FFh,0FFh,0FFh        ; 0BDh
  222.     db    0E7h,0E7h,007h,0E7h,007h,0FFh,0FFh,0FFh        ; 0BEh
  223.     db    0FFh,0FFh,0FFh,0FFh,007h,0E7h,0E7h,0E7h        ; 0BFh
  224.     db    0E7h,0E7h,0E7h,0E7h,0E0h,0FFh,0FFh,0FFh        ; 0C0h
  225.     db    0E7h,0E7h,0E7h,0E7h,000h,0FFh,0FFh,0FFh        ; 0C1h
  226.     db    0FFh,0FFh,0FFh,0FFh,000h,0E7h,0E7h,0E7h        ; 0C2h
  227.     db    0E7h,0E7h,0E7h,0E7h,0E0h,0E7h,0E7h,0E7h        ; 0C3h
  228.     db    0FFh,0FFh,0FFh,0FFh,000h,0FFh,0FFh,0FFh        ; 0C4h
  229.     db    0E7h,0E7h,0E7h,0E7h,000h,0E7h,0E7h,0E7h        ; 0C5h
  230.     db    0E7h,0E7h,0E0h,0E7h,0E0h,0E7h,0E7h,0E7h        ; 0C6h
  231.     db    0C9h,0C9h,0C9h,0C9h,0C8h,0C9h,0C9h,0C9h        ; 0C7h
  232.     db    0C9h,0C9h,0C8h,0CFh,0C0h,0FFh,0FFh,0FFh        ; 0C8h
  233.     db    0FFh,0FFh,0C0h,0CFh,0C8h,0C9h,0C9h,0C9h        ; 0C9h
  234.     db    0C9h,0C9h,008h,0FFh,000h,0FFh,0FFh,0FFh        ; 0CAh
  235.     db    0FFh,0FFh,000h,0FFh,008h,0C9h,0C9h,0C9h        ; 0CBh
  236.     db    0C9h,0C9h,0C8h,0CFh,0C8h,0C9h,0C9h,0C9h        ; 0CCh
  237.     db    0FFh,0FFh,000h,0FFh,000h,0FFh,0FFh,0FFh        ; 0CDh
  238.     db    0C9h,0C9h,008h,0FFh,008h,0C9h,0C9h,0C9h        ; 0CEh
  239.     db    0E7h,0E7h,000h,0FFh,000h,0FFh,0FFh,0FFh        ; 0CFh
  240.     db    0C9h,0C9h,0C9h,0C9h,000h,0FFh,0FFh,0FFh        ; 0D0h
  241.     db    0FFh,0FFh,000h,0FFh,000h,0E7h,0E7h,0E7h        ; 0D1h
  242.     db    0FFh,0FFh,0FFh,0FFh,000h,0C9h,0C9h,0C9h        ; 0D2h
  243.     db    0C9h,0C9h,0C9h,0C9h,0C0h,0FFh,0FFh,0FFh        ; 0D3h
  244.     db    0E7h,0E7h,0E0h,0E7h,0E0h,0FFh,0FFh,0FFh        ; 0D4h
  245.     db    0FFh,0FFh,0E0h,0E7h,0E0h,0E7h,0E7h,0E7h        ; 0D5h
  246.     db    0FFh,0FFh,0FFh,0FFh,0C0h,0C9h,0C9h,0C9h        ; 0D6h
  247.     db    0C9h,0C9h,0C9h,0C9h,000h,0C9h,0C9h,0C9h        ; 0D7h
  248.     db    0E7h,0E7h,000h,0E7h,000h,0E7h,0E7h,0E7h        ; 0D8h
  249.     db    0E7h,0E7h,0E7h,0E7h,007h,0FFh,0FFh,0FFh        ; 0D9h
  250.     db    0FFh,0FFh,0FFh,0FFh,0E0h,0E7h,0E7h,0E7h        ; 0DAh
  251.     db    000h,000h,000h,000h,000h,000h,000h,000h        ; 0DBh
  252.     db    0FFh,0FFh,0FFh,0FFh,000h,000h,000h,000h        ; 0DCh
  253.     db    00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh        ; 0DDh
  254.     db    0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h        ; 0DEh
  255.     db    000h,000h,000h,000h,0FFh,0FFh,0FFh,0FFh        ; 0DFh
  256.     db    0FFh,0FFh,0C4h,091h,09Bh,091h,0C4h,0FFh        ; 0E0h
  257.     db    0FFh,0C3h,099h,083h,099h,083h,09Fh,09Fh        ; 0E1h
  258.     db    0FFh,081h,099h,09Fh,09Fh,09Fh,09Fh,0FFh        ; 0E2h
  259.     db    0FFh,080h,0C9h,0C9h,0C9h,0C9h,0C9h,0FFh        ; 0E3h
  260.     db    081h,099h,0CFh,0E7h,0CFh,099h,081h,0FFh        ; 0E4h
  261.     db    0FFh,0FFh,0C0h,093h,093h,093h,0C7h,0FFh        ; 0E5h
  262.     db    0FFh,0CCh,0CCh,0CCh,0CCh,0C1h,0CFh,09Fh        ; 0E6h
  263.     db    0FFh,0C4h,091h,0F3h,0F3h,0F3h,0F3h,0FFh        ; 0E7h
  264.     db    081h,0E7h,0C3h,099h,099h,0C3h,0E7h,081h        ; 0E8h
  265.     db    0E3h,0C9h,09Ch,080h,09Ch,0C9h,0E3h,0FFh        ; 0E9h
  266.     db    0E3h,0C9h,09Ch,09Ch,0C9h,0C9h,088h,0FFh        ; 0EAh
  267.     db    0F1h,0E7h,0F3h,0C1h,099h,099h,0C3h,0FFh        ; 0EBh
  268.     db    0FFh,0FFh,081h,024h,024h,081h,0FFh,0FFh        ; 0ECh
  269.     db    0F9h,0F3h,081h,024h,024h,081h,09Fh,03Fh        ; 0EDh
  270.     db    0E3h,09Fh,03Fh,003h,03Fh,09Fh,0E3h,0FFh        ; 0EEh
  271.     db    0C3h,099h,099h,099h,099h,099h,099h,0FFh        ; 0EFh
  272.     db    0FFh,081h,0FFh,081h,0FFh,081h,0FFh,0FFh        ; 0F0h
  273.     db    0E7h,0E7h,081h,0E7h,0E7h,0FFh,081h,0FFh        ; 0F1h
  274.     db    0CFh,0E7h,0F3h,0E7h,0CFh,0FFh,081h,0FFh        ; 0F2h
  275.     db    0F3h,0E7h,0CFh,0E7h,0F3h,0FFh,081h,0FFh        ; 0F3h
  276.     db    0F1h,0E4h,0E4h,0E7h,0E7h,0E7h,0E7h,0E7h        ; 0F4h
  277.     db    0E7h,0E7h,0E7h,0E7h,0E7h,027h,027h,08Fh        ; 0F5h
  278.     db    0E7h,0E7h,0FFh,081h,0FFh,0E7h,0E7h,0FFh        ; 0F6h
  279.     db    0FFh,089h,023h,0FFh,089h,023h,0FFh,0FFh        ; 0F7h
  280.     db    0C7h,093h,093h,0C7h,0FFh,0FFh,0FFh,0FFh        ; 0F8h
  281.     db    0FFh,0FFh,0FFh,0E7h,0E7h,0FFh,0FFh,0FFh        ; 0F9h
  282.     db    0FFh,0FFh,0FFh,0FFh,0E7h,0FFh,0FFh,0FFh        ; 0FAh
  283.     db    0F0h,0F3h,0F3h,0F3h,013h,093h,0C3h,0E3h        ; 0FBh
  284.     db    087h,093h,093h,093h,093h,0FFh,0FFh,0FFh        ; 0FCh
  285.     db    08Fh,0E7h,0CFh,09Fh,087h,0FFh,0FFh,0FFh        ; 0FDh
  286.     db    0FFh,0FFh,0C3h,0C3h,0C3h,0C3h,0FFh,0FFh        ; 0FEh
  287.     db    0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh        ; 0FFh
  288.  
  289.  
  290. label1:
  291.  
  292. ; exit if new table same as current table
  293.     mov    bh,1            ; request for char table address
  294.     mov    al,30h            ; BIOS info request
  295.     mov    ah,11h            ; BIOS char generator function
  296.     int    10h            ; BIOS sets ES:BP to point to table
  297.     mov    di,bp            ; ES:DI -> current table
  298.  
  299.     mov    si,offset csdefs
  300.     push    cs
  301.     pop    ds            ; DS:SI -> our table
  302.  
  303.     mov    cx,label1-csdefs    ; size of table in bytes
  304.     repe    cmpsb
  305.     jne    label2            ; jump if our table contains new data
  306.  
  307.     mov    ax,4C00h
  308.     int    21h            ; exit to DOS
  309.  
  310. ; put EGA into All Points Addressible graphics mode so that DOS will use
  311. ; our character table
  312. label2:    mov    al,6            ; 640x200 2color APA graphics
  313.     mov    ah,0
  314.     int    10h
  315.  
  316. ; point EGA graphics character generator to our character definitions
  317.     mov    bp,offset csdefs
  318.     push    cs
  319.     pop    es            ; ES:BP points to our table
  320.     mov    cx,8            ; CX := bytes/character in table
  321.     mov    bl,0            ; BL := 0 (BIOS will use DL for
  322.                     ;  number of rows on screen)
  323.     mov    dl,19h            ; DL := 25 (number of character rows
  324.                     ;  on screen)
  325.     mov    al,21h            ; "user graphics character load"
  326.     mov    ah,11h            ; BIOS "character generator routine"
  327.     int    10h            ; call EGA BIOS
  328.  
  329. ; for compatibility, point interrupt 1Fh vector to characters 80h - FFh
  330.     mov    bp,offset hi_half
  331.     push    cs
  332.     pop    es            ; ES:BP -> 2nd half of table
  333.     mov    al,20h            ; "int 1Fh load"
  334.     mov    ah,11h
  335.     int    10h
  336.  
  337. ; leave table resident in RAM
  338.     mov    dx,offset label1
  339.     mov    cl,4
  340.     shr    dx,cl            ; DX := size of resident table
  341.     inc    dx            ;  in paragraphs
  342.     mov    ax,3100h
  343.     int    21h            ; terminate and remain resident
  344.  
  345. cseg    ends
  346.  
  347.     end    label0
  348.